﻿//using UnityEngine;
//using Vec2 = UnityEngine.Vector2Int;

//namespace Core.Experiment
//{
//    public enum ETileCell
//    {
//        Point,
//        Line,
//        Plane
//    }

//    public class TileCell : MonoBehaviour
//    {
//        public Vec2 Size = Vec2.one;

//        public ETileCell Type;
//        public Vec2[] Corners = new Vec2[4];

//        private TileMap m_tile_map;

//        public virtual void Start()
//        {
//            m_tile_map = transform.parent?.GetComponent<TileMap>();

//            Refresh();

//            if (Size.x == 1 && Size.y == 1)
//            {
//                Type = ETileCell.Point;
//            }
//            else if (Size.x == 1 || Size.y == 1)
//            {
//                Type = ETileCell.Line;
//            }
//            else
//            {
//                Type = ETileCell.Plane;
//            }

//            if (m_tile_map != null)
//            {
//                m_tile_map.Push(this);
//            }
//        }

//        public void Refresh()
//        {
//            var pos = transform.position;

//            var x = Mathf.FloorToInt(pos.x);
//            var z = Mathf.FloorToInt(pos.z);

//            var pos1 = new Vec2(x, z);
//            Corners[0] = pos1 + new Vec2(-Size.x / 2, -Size.y / 2);
//            Corners[1] = Corners[0] + new Vec2(0, Size.y - 1);
//            Corners[2] = Corners[0] + new Vec2(Size.x - 1, Size.y - 1);
//            Corners[3] = Corners[0] + new Vec2(Size.x - 1, 0);

//            var pos2 = new Vector3(x, pos.y, z);
//            pos2 += new Vector3(Size.x % 2 * 0.5f, 0, Size.y % 2 * 0.5f);
//            transform.position = pos2;
//        }

//        public void Adjust(Vec2 map_size)
//        {
//            var offset = new Vec2(map_size.x / 2, map_size.y / 2);
//            Corners[0] += offset;
//            Corners[1] += offset;
//            Corners[2] += offset;
//            Corners[3] += offset;
//        }

//    }
//}
